"""
这是一个sqlite3的应用模块 以后使用sqlite3在此调用

"""
import sqlite3


# Python3.6引入了类型信息，定义变量的时候可以指定类型
def get_sqlite3_connect(db_file_name: str, isolation_level = '') -> sqlite3.Connection:
    """
    该函数是一个链接sqlite3的函数  只需要传入数据库文件地址即可
    Python3.6引入了类型信息，定义变量的时候可以指定类型 如上面函数定义
    传入dbFileName 类型为str 指定返回类型为 sqlite3.Connection
    :param db_file_name: 传入的数据库名 如dbfile/test.txt.db
    :return: 返回一个数据库的链接conn
    """
    connect = sqlite3.connect(db_file_name, isolation_level=isolation_level)
    return connect


def get_cursor(connect: sqlite3.Connection) -> sqlite3.Cursor:
    """
    本函数通过链接返回sqlite3的游标
    :param connect: 传入的是sqlite3的连接
    :return: 返回游标
    """
    cursor = connect.cursor()
    return cursor


def my_execute(cursor: sqlite3.Cursor, sql: str) -> sqlite3.Cursor:
    """
    通过游标对象执行sql语句并返回结果
    :param cursor: 游标对象
    :param sql:  需要执行的sql语句
    :return:  返回结果的游标对象
    """
    result = cursor.execute(sql)
    print(result)
    return result


def get_rowcount(cursor: sqlite3.Cursor) -> int:
    """
    获取sql语句影响的行数
    :param cursor: 游标对象
    :return:  影响的行数
    """
    num = cursor.rowcount
    return num


def close_cursor(cursor: sqlite3.Cursor) -> None:
    """
    关闭游标
    :param cursor: 游标
    :return: None
    """
    cursor.close()


def my_commit(connect: sqlite3.Connection) -> None:
    """
    提交
    :param connect: 连接
    :return: None
    """
    connect.commit()


def close_connect(connect: sqlite3.Connection) -> None:
    """
    链接关闭
    :param connect: 连接
    :return: None
    """
    connect.close()


# dbfile = "dbfile/test.txt.db"
# conn = get_sqlite3_connect(dbfile)
# curse = get_cursor(conn)
# sql = 'insert into user (id, name) values (\'3\', \'Michael\')'
# result = my_execute(curse, sql)
# num = get_rowcount(result)
# print(num)
# close_cursor(result)
# my_commit(conn)
# close_connect(conn)
